/*
Titulo: Valor Maximo            Filename: maxMarquez.s
Autor: Jose Marquez             Date: 7-Marzo-2017
Description: Se encuentra el valor maximo de una lista dada de numeros.
Input:-
Output: Numero maximo
*/

@ maxMarquez.s
@ Encontrar el mazimo de una lista de numeros.
@ 

@ r1 - se usa para identificar la direccion de la informacion de los elementos
@ r0 - se usa para el elemento mas largo
@ r3 - se usa para el dato actual

.section      .data

numeros:                  @los datos que se van a usar.
.long   3,67,34,222,45,75,54,34,44,33,22,11,66,0

.globl  _start

_start:
ldr %r1, =numeros         @ se da r1 para dar la direccion de inicio de "numeros"
ldr %r3, [%r1]            @ r3 se inicializa con el primer numero
mov %r0, %r3              @ al inicio el numero actual debe ser el mas largo

loop:
  cmp %r3, $0             @ revisa si r3 contiene un cero (el final de la lista)
  beq exit                @ si es asi, salir
  ldr %r3, [%r1,#4]       @ carga el siguiente elemento a r3
  cmp %r3, %r0            @ compara r0 y r3
  ble bloop               @ se inicia el civlo si r3 <= r0
  mov %r0, %r5            @ caso contrario se inserta r3 en r0
  bal loop                @ se inicia el ciclo (se deriva siempre)
  
exit:                     @ el valor mas largo ahora esta en r0
 mov %r7, $1              @ se prepara para salor
 svc $0                   @ se despierta el kernel (nucleo)
 .end                     @ se marca el final del codigo
